El paradigma funcional cambia el modelo mental del desarrollador de "actualizar una caja con estado" a aplicar transformaciones matemáticas a valores inmutables. En Elixir, los datos nunca se modifican; simplemente nacen nuevamente en nuevas formas.
1. La afirmación matemática
Cuando escribes $x = a + 1$, no estás asignando un resultado a una variable. En cambio, simplemente afirmando que las expresiones $x$ y $a + 1$ tienen el mismo valor. Esto refleja la lógica algebraica donde $x$ representa un valor fijo en un contexto específico.
2. Inmutabilidad como garantía
En Elixir, todos los valores son inmutables. Los datos no pueden alterarse una vez creados. Esto elimina los "efectos secundarios" donde una función podría cambiar inesperadamente una variable global o un objeto pasado por parámetro, asegurando que el código sea predecible y seguro para hilos.
3. Transformación frente a mutación
Nunca modificamos los datos in situ. Elixir no tiene asignación; en cambio, intenta hacer coincidir valores con patrones. Para "cambiar" un valor, pasamos los datos originales a través de una función para producir una versión completamente nueva.
"elixir"
iex> cap_name = String.capitalize name
"Elixir"
iex> name
"elixir" (¡Todavía impecable!)